#ifndef ORG_WXW0303_SYMBOL_DB_SYMDBCONF_H
#define ORG_WXW0303_SYMBOL_DB_SYMDBCONF_H

#include <string>


/// Symdb 配置类,其对象全局唯一.
struct SymdbConf {
    /// 将 path 设置为数据库文件的路径.
    void setDbPath(const char *path);

    /// 获取数据库文件的绝对路径.
    const std::string& dbPath();

    /// 获取全局唯一对象的引用.
    static SymdbConf& instance();

    // 在其析构时,将配置写入到磁盘中永久保存.
    ~SymdbConf()
    {
        writeConfToFile();
        return ;
    }

    SymdbConf(const SymdbConf&) = delete;
    SymdbConf(SymdbConf &&) = delete;
    SymdbConf& operator=(const SymdbConf &) = delete;
    SymdbConf& operator=(SymdbConf &&) = delete;
private:
    SymdbConf() = default;

    // 将当前配置信息写入到指定的文件中.
    void writeConfToFile() const;
    // 从文件中加载配置信息
    void loadConfFromFile();

private:

    // 若为空,表明当前还未从磁盘中加载配置信息.
    std::string db_path_;
};

#endif // ORG_WXW0303_SYMBOL_DB_SYMDBCONF_H
